﻿Imports Entidad
Imports Negocio
Imports Utilitario
Public Class frmBulto

    Dim servicio1 As New CajaNegocio
    Dim servicio2 As New DocumentoClienteBultoNegocio
    Dim servicio3 As New DocumentoClienteBultoDetalleNegocio

    Dim codigoBultoDetalle As Integer

    Sub mensaje(ByVal men As String)
        MsgBox(men, MsgBoxStyle.Information, "Mensajes al Usuario")
    End Sub

    Sub listarTipoCajas()
        With cboTipoCaja
            .DataSource = servicio1.listarCajas().Tables(0)
            .DisplayMember = "TCA_Descripcion"
            .ValueMember = "TCA_Codigo"
        End With
    End Sub

    Private Sub frmBulto_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        listarTipoCajas()
        cboTipoCaja.SelectedValue = tipoCaja
        If dgvModBulto.RowCount <> 0 Then
            dgvModBulto.Rows(0).Selected = False
        End If
    End Sub

    Private Sub dgvModBulto_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvModBulto.CellClick
        Dim row As Integer = e.RowIndex
        If row > -1 Then
            codigoBultoDetalle = dgvModBulto.Item("Column1", row).Value
        End If
    End Sub

    Private Sub dgvModBulto_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvModBulto.CellDoubleClick
        Dim row As Integer = e.RowIndex
        If row > -1 Then
            nombreArticuloMuestra = "Artículo : " & dgvModBulto.Item("Column2", row).Value
            frmConfirmacionBultos.txtCantidadBulto.Text = dgvModBulto.Item("Column3", row).Value
            frmConfirmacionBultos.txtRestante.Text = "0"
            frmConfirmacionBultos.txtNumeros.Text = "0"
            presiona = False

            If frmConfirmacionBultos.ShowDialog() = Windows.Forms.DialogResult.OK Then
                dgvModBulto.Item("Column3", row).Value = cantidad
                txtPesoBruto.Text = ""
                txtPesoNeto.Text = ""
                txtPesoNeto.Focus()
            End If
        End If
    End Sub

    Private Sub btnModificar_Click(sender As System.Object, e As System.EventArgs) Handles btnModificar.Click
        If txtCantidad.Text = "" Then
            mensaje("Ingrese la cantidad del bulto.")
            txtCantidad.Focus()
            Exit Sub
        ElseIf Not IsNumeric(txtCantidad.Text.Trim) Then
            mensaje("No se puede ingresar letras.")
            txtCantidad.Text = ""
            txtCantidad.Focus()
            Exit Sub
        ElseIf CDec(txtCantidad.Text.Trim) <= 0 Then
            mensaje("No se admiten números negativos o el cero.")
            txtCantidad.Text = ""
            txtCantidad.Focus()
            Exit Sub
        End If
        If txtPesoNeto.Text = "" Then
            mensaje("Ingrese el peso neto del bulto.")
            txtPesoNeto.Focus()
            Exit Sub
        ElseIf Not IsNumeric(txtPesoNeto.Text.Trim) Then
            mensaje("No se puede ingresar letras.")
            txtPesoNeto.Text = ""
            txtPesoNeto.Focus()
            Exit Sub
        ElseIf CDec(txtPesoNeto.Text.Trim) <= 0 Then
            mensaje("No se admiten números negativos o el cero.")
            txtPesoNeto.Text = ""
            txtPesoNeto.Focus()
            Exit Sub
        End If
        If txtPesoBruto.Text = "" Then
            mensaje("Ingrese el peso bruto del bulto.")
            txtPesoBruto.Focus()
            Exit Sub
        ElseIf Not IsNumeric(txtPesoBruto.Text.Trim) Then
            mensaje("No se puede ingresar letras.")
            txtPesoBruto.Text = ""
            txtPesoBruto.Focus()
            Exit Sub
        ElseIf CDec(txtPesoBruto.Text.Trim) <= 0 Then
            mensaje("No se admiten números negativos o el cero.")
            txtPesoBruto.Text = ""
            txtPesoBruto.Focus()
            Exit Sub
        End If

        Dim bulto As New DocumentoBulto(Nothing, Nothing, Nothing, Nothing, lblCodigoBulto.Text, cboTipoCaja.SelectedValue.ToString, CInt(txtCantidad.Text.Trim), CDec(txtPesoNeto.Text.Trim), CDec(txtPesoBruto.Text.Trim), txtCaja.Text.Trim, txtPrecinto.Text.Trim, txtObservaciones.Text.Trim, Nothing)
        servicio2.actualizarDocumentoBulto(bulto)

        Dim generico1 As New Generico(lblPedido.Text, CInt(lblCodigoBulto.Text), Nothing, Nothing, CInt(txtCantidad.Text.Trim), CDec(txtPesoNeto.Text.Trim), CDec(txtPesoBruto.Text.Trim), txtCaja.Text.Trim & "/" & txtPrecinto.Text.Trim, txtObservaciones.Text.Trim)
        servicio2.actualizarCTRG01(generico1)

        For Each fila As DataGridViewRow In dgvModBulto.Rows
            Dim bultoDetalle As New DocumentoBultoDetalle(Nothing, Nothing, Nothing, Nothing, lblCodigoBulto.Text.Trim, CInt(fila.Cells("Column1").Value), Nothing, CDec(fila.Cells("Column3").Value))
            servicio3.actualizarDocumentoBultoDetalle(bultoDetalle)

            Dim generico2 As New Generico(lblPedido.Text, CInt(lblCodigoBulto.Text), CInt(fila.Cells("Column1").Value), Nothing, CDec(fila.Cells("Column3").Value), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
            servicio3.actualizarCTRG02(generico2)
        Next

        mensaje("Se actualizó el bulto correctamente.")
        DialogResult = Windows.Forms.DialogResult.OK
    End Sub

    Private Sub btnEliminar_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminar.Click
        If dgvModBulto.RowCount = 1 Then
            mensaje("No se puede eliminar más registros.")
            Exit Sub
        End If
        If MsgBox("¿Esta seguro que desea eliminar este detalle?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim generico As New Generico(lblPedido.Text, CInt(lblCodigoBulto.Text), codigoBultoDetalle, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
            servicio3.eliminarCTRG02XDetalle(generico)

            Dim detalle As New DocumentoBultoDetalle(Nothing, Nothing, Nothing, Nothing, CInt(lblCodigoBulto.Text.Trim), codigoBultoDetalle, Nothing, Nothing)
            servicio3.eliminarDocumentoBultoDetalle(detalle)

            mensaje("Detalle eliminado correctamente.")
            dgvModBulto.DataSource = servicio3.obtenerDetalleBulto(CInt(lblCodigoBulto.Text)).Tables(0)

            DialogResult = Windows.Forms.DialogResult.OK
        End If
    End Sub

End Class